package com.inei.cie.capituloiv;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import com.inei.cie.R;
import com.inei.cie.capituloi.CapituloI_Capitulos_Activity;
import com.inei.cie.capituloix.CapituloIX_Activity;
import com.inei.cie.dao.CapituloIVDao;
import com.inei.cie.utilitarios.Variables;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class CapituloIV_Foto_Croquis extends Activity {

	public ImageView iviFotoCroquis;
	public static final int TAKE_PHOTO_CODE = 1;
	public String codLocal;
	public int numeroPredio;
	public String escalaIngresada;
	public Variables var;
	public TextView tviMensajeNoFoto;
	public Button butFoto;
	public Boolean fotoTomada = false;
	public TextView tviNumeroCodigoLocal;
	public TextView tviNumeroPredio;
	public CapituloIVDao cap4Dao;
	public String rutaFoto;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		var = new Variables();
		cap4Dao = new CapituloIVDao(CapituloIV_Foto_Croquis.this);
		super.onCreate(savedInstanceState);
		setContentView(R.layout.capitulo_iv_foto_croquis);
		iviFotoCroquis = (ImageView) findViewById(R.id.iviFoto_Croquis);
		tviMensajeNoFoto = (TextView) findViewById(R.id.tviMensajeNoFoto);
		butFoto = (Button) findViewById(R.id.butFoto);
		codLocal = getIntent().getExtras().getString(var.ID_LOCAL);
		numeroPredio = getIntent().getExtras().getInt(var.NRO_PRED);
		tviNumeroCodigoLocal = (TextView) findViewById(R.id.tviNumeroCodigoLocal);
		tviNumeroPredio = (TextView) findViewById(R.id.tviNumeroPredio);
		tviNumeroCodigoLocal.setText(codLocal);
		tviNumeroPredio.setText(String.valueOf(numeroPredio));
		Bitmap imagen = obtenerImagenLinderos(codLocal, numeroPredio);
		if (imagen != null) {
			rutaFoto = getTempFile(getApplicationContext()).getAbsolutePath();
			iviFotoCroquis.setImageBitmap(imagen);
			tviMensajeNoFoto.setVisibility(View.INVISIBLE);
		} else {
			rutaFoto = "";
			iviFotoCroquis.setVisibility(View.INVISIBLE);
			tviMensajeNoFoto
					.setText("No existe foto para el croquis de este predio");
		}

		butFoto.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				takePhoto();
				rutaFoto = getTempFile(getApplicationContext())
						.getAbsolutePath();
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.menu_capituloiv_foto_croquis, menu);
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {

		switch (item.getItemId()) {
		case R.id.mnSalir:
			AlertDialog.Builder dialogo1 = new AlertDialog.Builder(this);
			dialogo1.setTitle("Importante");
			dialogo1.setMessage("Deseas Salir ?");
			dialogo1.setIcon(android.R.drawable.ic_dialog_alert);
			dialogo1.setCancelable(false);
			dialogo1.setPositiveButton("Si",
					new DialogInterface.OnClickListener() {
						public void onClick(DialogInterface dialogo1, int id) {
							System.exit(0);
						}
					});

			dialogo1.setNegativeButton("No",
					new DialogInterface.OnClickListener() {
						public void onClick(DialogInterface dialogo1, int id) {
							return;
						}
					});
			dialogo1.show();
			break;
		case R.id.mnIncio:
			Intent marco = new Intent(this, CapituloI_Capitulos_Activity.class);
			marco.putExtras(getIntent().getExtras());
			startActivity(marco);
			finish();
			break;
		case R.id.Leyenda:
			DialogoLeyenda();
			break;
		case R.id.mnSiguiente:
			if (cap4Dao.verificarExistenciaCapitulo4(codLocal, numeroPredio) == 0) {
				cap4Dao.ingresarCapitulo4(codLocal, numeroPredio, 1);
			}
			Bundle b = getIntent().getExtras();
			b.putString(var.ID_LOCAL, codLocal);
			b.putInt(var.NRO_PRED, numeroPredio);
			Intent capiiv = new Intent(CapituloIV_Foto_Croquis.this,
					CapituloIV_Menu_Tramos_Activity.class);
			capiiv.putExtras(b);
			startActivity(capiiv);
			finish();
			if (rutaFoto.equals("")) {
				Toast.makeText(getApplicationContext(),
						"No ha tomado la foto del croquis del predio",
						Toast.LENGTH_SHORT).show();
			} else {
				cap4Dao.actualizarFoto(codLocal, numeroPredio, rutaFoto);
			}
			break;
		case R.id.mnFoto:
			Intent foto = new Intent(CapituloIV_Foto_Croquis.this,
					CapituloIX_Activity.class);
			foto.putExtras(getIntent().getExtras());
			foto.putExtra("pregunta", true);
			startActivity(foto);
			break;
		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}

	private void takePhoto() {
		final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
		intent.putExtra(MediaStore.EXTRA_OUTPUT,
				Uri.fromFile(getTempFile(this)));
		startActivityForResult(intent, TAKE_PHOTO_CODE);
	}

	private File getTempFile(Context context) {
		File sdCard = Environment.getExternalStorageDirectory();
		File dir = new File(sdCard.getAbsolutePath() + "/CIE2013/" + codLocal
				+ "/PRED_" + numeroPredio + "/CAP4");
		final File path = dir;
		if (!path.exists()) {
			path.mkdirs();
		}
		return new File(path, codLocal + "_" + numeroPredio + "_Croquis.png");
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		switch (requestCode) {
		case 1:
			if (resultCode == RESULT_OK) {
				File sdCard = Environment.getExternalStorageDirectory();
				File imgFile = new File(sdCard.getAbsolutePath() + "/CIE2013/"
						+ codLocal + "/PRED_" + numeroPredio + "/CAP4/"
						+ codLocal + "_" + numeroPredio + "_Croquis.png");
				Bitmap myBitmap = BitmapFactory.decodeFile(imgFile
						.getAbsolutePath());
				iviFotoCroquis.setVisibility(View.VISIBLE);
				tviMensajeNoFoto.setVisibility(View.INVISIBLE);
				iviFotoCroquis.setImageBitmap(myBitmap);
				fotoTomada = true;
			}
		}
	}

	public Bitmap obtenerImagenLinderos(String codigoLocal, int numeroPredio) {
		Bitmap bitmap = null;
		try {
			File sdCard = Environment.getExternalStorageDirectory();
			File directory = new File(sdCard.getAbsolutePath() + "/CIE2013/"
					+ codLocal + "/PRED_" + numeroPredio + "/CAP4");
			File file = new File(directory, codigoLocal + "_" + numeroPredio
					+ "_Croquis.png");
			FileInputStream streamIn;
			streamIn = new FileInputStream(file);
			bitmap = BitmapFactory.decodeStream(streamIn);
			streamIn.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return bitmap;
	}

	public void DialogoLeyenda() {
		final Dialog dialog = new Dialog(this);
		dialog.setContentView(R.layout.dialog_leyenda_activity);
		dialog.setTitle("Leyenda");
		dialog.show();
	}

	@Override
	public void onBackPressed() {
		Bundle b = getIntent().getExtras();
		Intent capitulos = new Intent(CapituloIV_Foto_Croquis.this,
				CapituloI_Capitulos_Activity.class);
		capitulos.putExtras(b);
		startActivity(capitulos);
		super.onBackPressed();
	}

	public String cargarEscala() {
		return cap4Dao.obtenerEscala(codLocal, String.valueOf(numeroPredio));
	}

	public void grabarEscala(String codLocal, int numeroPredio, String escala) {

	}
}
